-- vim.cmd.colorscheme('')


local opt = vim.opt

opt.splitright = true --
opt.splitbelow = true --  新建窗口时, 窗口会往下边放

opt.filetype = on
-- 启用代码折叠
opt.foldenable = true
-- 折叠标识为 {{{ code }}}
opt.foldmethod = "marker"
-- 一次折叠的层级有多少
opt.foldlevel = 99 

--[[ opt.list = true
opt.lcs = "eol:↴" ]]

-- 行设置
-- 设置相对行号
opt.number = true
opt.relativenumber = true
-- 高亮光标所在行
opt.cursorline = true
-- 不自动换行, 用 <leader>0 切换
opt.wrap = false
-- 不在单词内部换行(需开启自动换行 )
opt.linebreak = true
-- 上下滚动时光标离窗口上下边界 3 行
opt.scrolloff = 3
-- 左右移动时,光标离左右窗口边界保持88个字符的距离
opt.sidescrolloff = 8
-- 左右键可以已到下一行或者上一行
opt.whichwrap = "b,s,<,>,[,],h,l"

-- utf8
opt.encoding = "UTF-8" -- 编辑器的编码, 如缓存的文本、寄存器、Vim 脚本文件等
opt.fileencodings = "utf-8,ucs-bom,gb18030,gbk,gb2312,cp936"                     -- 写入文件时采用的编码类型
opt.fileencoding = "utf-8" -- 写入文件时采用的编码类型
vim.scriptencoding = 'utf-8' --脚本文件所使用的编码
opt.helplang = cn -- 帮助文件所使用的语言

-- 添加拼写支持
opt.spell = false

-- 默认值为: "nosplit"
opt.inccommand = 'split'

-- 禁止创建备份文件
opt.backup = false
opt.writebackup = false
opt.swapfile = false
opt.undofile = false

-- 显示输入的命令
opt.showcmd = true

-- smaller updatetime
-- opt.updatetime = 300

-- 右边添加参考线
-- opt.colorcolumn = "100"

-- 设置 timeoutlen 为等待键盘快捷键连击时间300毫秒，可根据需要设置
opt.timeout = true
opt.timeoutlen = 300

-- 是否在命令行显示当前模式
opt.showmode = false

-- 弹出菜单最多显示10行
opt.pumheight = 10

-- 在多数终端上修正退格键Backspace的行为
-- indent  删除自动缩进所产生的缩进
-- eol     在行首按 backspace 与上一行合并
-- start   删除旧的内容(打开文件之前的内容)
-- 0       只能删除新内容,但新输入的自动缩进和换行不可删除
-- 1       可删除新输入的内容,包括自动缩进和合并行. 不可删除旧内容,包括自动缩进和合并行
-- 2       啥都可以删,等同于 backspace=indent,eol,start
-- opt.backspace = "indent,eol,start"
opt.backspace = { 'start', 'eol', 'indent' }

--opt.cscopequickfix = "s-,c-,d-,i-,t-,e-"

-- 允许隐藏被修改过的buffer
opt.hidden = true

-- 命令行高为1
opt.cmdheight = 1

-- 光标可以定位到最后一个字的后面
opt.virtualedit = "block,onemore"

-- 行号宽度设置为4
opt.numberwidth = 4 
-- opt.numbercolor = red

-- 显示状态行，值为 0 不显示，值为 1 当有多个窗口才显示，值为2 永久显示
opt.laststatus = 2

-- 2 总是显示标签页，0 不显示，1 出现多个标签页才显示
opt.showtabline = 2
-- 最多可以打开 9 个标签页，默认10个
-- opt.tabpagemax = 9

-- 当文件被外部程序修改时，自动加载
opt.autoread = true

-- 开启搜索高亮 
opt.hlsearch = true
-- 搜索逐字高亮
opt.incsearch = true
-- 搜索忽略大小写
opt.ignorecase = true
-- 如果有一个大写字母，则切换到大小写敏感查找
opt.smartcase = true

-- 退出时文件没保存,会问你是否保存
opt.confirm = true

-- 禁用鼠标, nvim 默认值为开启
opt.mouse = "r"

-- 启用 24-bit 彩色模式
opt.termguicolors = true
-- 行号前面多出一列,用于插件提示
opt.signcolumn = "yes"

-- opt.background = "dark"

-- 自动补全不自动选中
opt.completeopt = "menu,menuone,noselect,noinsert"
opt.wildmenu = true

opt.title = true

-- 关于缩进
opt.tabstop = 4
-- >> << 时移动长度
opt.shiftwidth = 4
opt.softtabstop = 4
opt.smarttab = true
opt.breakindent = true
opt.shiftround = true
-- 空格代替制表符 
opt.expandtab = true

-- 新行对齐当前行
opt.autoindent = true
-- 开启新行时使用智能自动缩进
opt.smartindent = true
opt.cindent = true

-- 查找文件向下搜索到子文件夹
opt.path:append { '**' }

opt.wildignore:append { '*/node_modules/*' }

opt.formatoptions:append { 'r' }

-- 共享系统剪贴板
opt.clipboard = "unnamedplus"

-- 高亮显示括号
opt.showmatch = true

-- 自动切换当前目录为当前文件所在的目录
-- opt.autochdir = true


-- 插入模式显示绝对行号，普通模式显示相对行号
vim.api.nvim_create_autocmd({ "InsertEnter" }, {
    pattern = { "*" },
    callback = function()
        vim.opt.relativenumber = false
        vim.opt.number = true
    end,
}   )
vim.api.nvim_create_autocmd({ "InsertLeave" }, {
    pattern = { "*" },
    callback = function()
        vim.opt.relativenumber = true
        vim.opt.number = true
    end,
})

-- vim Options
vim.cmd([[
" 快捷文本
ab qml 1014150883@qq.com
ab gml luiswuking@gmail.com
ab qq 1014150884
ab wx LuisWu-35
ab ph 18755141108
]])

-- 换行不要延续注释
vim.api.nvim_create_autocmd({ "BufEnter" }, {
    pattern = { "*" },
    callback = function()
        vim.opt.formatoptions = vim.opt.formatoptions - { "c", "r", "o" }
    end,
})

-- 高亮复制区域
vim.api.nvim_create_autocmd({ "TextYankPost" }, {
	pattern = { "*" },
	callback = function()
		vim.highlight.on_yank({
			timeout = 300,
		})
	end,
})

-- 重新打开缓冲区恢复光标位置 
vim.api.nvim_create_autocmd("BufReadPost", {
    pattern = "*",
    callback = function()
        if vim.fn.line("'\"") > 0 and vim.fn.line("'\"") <= vim.fn.line("$") then
            vim.fn.setpos(".", vim.fn.getpos("'\""))
            vim.cmd("silent! foldopen")
        end
    end,
})

-- 离开插入模式 时关闭粘贴模式
vim.api.nvim_create_autocmd("InsertLeave", {
    pattern = '*',
    command = "set nopaste"
})
